summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFernando S <fsahmkow27@gmail.com>2023-04-24 12:37:13 +0200
committerGitHub <noreply@github.com>2023-04-24 12:37:13 +0200
commit9bf19b04f6ba432e09caf387ca9b63db5585f140 (patch)
tree03030ec8030f7b4da2285c6ebe55e473117bdcf6
parentMerge pull request #10056 from vonchenplus/audout_u (diff)
parentvulkan: pick alpha composite flags based on available values (diff)
downloadyuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar
yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar.gz
yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar.bz2
yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar.lz
yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar.xz
yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar.zst
yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.zip
-rw-r--r--src/video_core/renderer_vulkan/vk_swapchain.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp
index 85fdce6e5..b1465e35c 100644
--- a/src/video_core/renderer_vulkan/vk_swapchain.cpp
+++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp
@@ -65,6 +65,18 @@ VkExtent2D ChooseSwapExtent(const VkSurfaceCapabilitiesKHR& capabilities, u32 wi
return extent;
}
+VkCompositeAlphaFlagBitsKHR ChooseAlphaFlags(const VkSurfaceCapabilitiesKHR& capabilities) {
+ if (capabilities.supportedCompositeAlpha & VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR) {
+ return VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
+ } else if (capabilities.supportedCompositeAlpha & VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR) {
+ return VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR;
+ } else {
+ LOG_ERROR(Render_Vulkan, "Unknown composite alpha flags value {:#x}",
+ capabilities.supportedCompositeAlpha);
+ return VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
+ }
+}
+
} // Anonymous namespace
Swapchain::Swapchain(VkSurfaceKHR surface_, const Device& device_, Scheduler& scheduler_,
@@ -155,6 +167,7 @@ void Swapchain::CreateSwapchain(const VkSurfaceCapabilitiesKHR& capabilities, bo
const auto formats{physical_device.GetSurfaceFormatsKHR(surface)};
const auto present_modes{physical_device.GetSurfacePresentModesKHR(surface)};
+ const VkCompositeAlphaFlagBitsKHR alpha_flags{ChooseAlphaFlags(capabilities)};
const VkSurfaceFormatKHR surface_format{ChooseSwapSurfaceFormat(formats)};
present_mode = ChooseSwapPresentMode(present_modes);
@@ -185,7 +198,7 @@ void Swapchain::CreateSwapchain(const VkSurfaceCapabilitiesKHR& capabilities, bo
.queueFamilyIndexCount = 0,
.pQueueFamilyIndices = nullptr,
.preTransform = capabilities.currentTransform,
- .compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
+ .compositeAlpha = alpha_flags,
.presentMode = present_mode,
.clipped = VK_FALSE,
.oldSwapchain = nullptr,